#pragma once

#include "sys/IInterface.h"
#include "EventID.h"

class SystemEventArgs;
class DrawEventArgs;
delegate Delegate<bool(IObject* /*sender*/,SystemEventArgs* /*e*/)> SystemEventHandler;
delegate Delegate<void(IObject* /*sender*/,DrawEventArgs* /*e*/)> DrawingEventHandler;

interface ISystemEvent : public IInterface
{
	DEFINE_IID(IID_SystemEvent)

	event_declare(SystemEventHandler,LButtonDown);
	event_declare(SystemEventHandler,LButtonUp);
	event_declare(SystemEventHandler,LButtonDoubleClick);

	event_declare(SystemEventHandler,RButtonDown);
	event_declare(SystemEventHandler,RButtonUp);
	event_declare(SystemEventHandler,RButtonDoubleClick);

	event_declare(SystemEventHandler,MouseMove);
	event_declare(SystemEventHandler,MouseWheel);

	event_declare(DrawingEventHandler,Drawing);

	event_declare(SystemEventHandler,ExecuteCommand);
	event_declare(SystemEventHandler,UpdateUI);
};